home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 March / macformat-022.iso / Shareware City / Developers / MW MPW Binaries 1.1.1a2 / mwcPPC / MWCIncludes / exception < prev    next >
Encoding:
Text File  |  1994-07-18  |  2.8 KB  |  127 lines  |  [TEXT/MMCC]

  1. // exception standard header
  2. #ifndef _EXCEPTION_
  3. #define _EXCEPTION_
  4. #include <defines>
  5.  
  6. #if __MWERKS__
  7. #pragma options align=mac68k
  8. #endif
  9.  
  10.         // class xmsg
  11. class xmsg {
  12. public:
  13.     typedef void(*raise_handler)(xmsg&);
  14.     static raise_handler set_raise_handler(raise_handler);
  15.     xmsg(const char * = 0, const char * = 0, const char * = 0);
  16.     xmsg(const xmsg&);
  17.     xmsg& operator=(const xmsg&);
  18.      virtual ~xmsg();
  19.     void raise();
  20.     const char *what() const;
  21.     const char *where() const;
  22.     const char *why() const;
  23.     static void _Throw(xmsg *);
  24. protected:
  25.     virtual void do_raise();
  26.     xmsg(const char *, const char *, const char *, _Bool);
  27. private:
  28.     void _Tidy();
  29.     static raise_handler _Handler;
  30.     const char *_What, *_Where, *_Why;
  31.     _Bool _Alloced;
  32.     };
  33.         // class xlogic
  34. class xlogic : public xmsg {
  35. public:
  36.     xlogic(const char * = 0, const char * = 0, const char * = 0);
  37.     virtual ~xlogic();
  38. protected:
  39.     virtual void do_raise();
  40.     };
  41.         // class xruntime
  42. class xruntime : public xmsg {
  43. public:
  44.     xruntime(const char * = 0, const char * = 0,
  45.         const char * = 0);
  46.     virtual ~xruntime();
  47. protected:
  48.     xruntime(const char *, const char *, const char *, _Bool);
  49.     virtual void do_raise();
  50.     };
  51.         // class badcast
  52. class badcast : public xlogic {
  53. public:
  54.     badcast(const char * = 0, const char * = 0, const char * = 0);
  55.     virtual ~badcast();
  56. protected:
  57.     virtual void do_raise();
  58.     };
  59.         // class invalidargument
  60. class invalidargument : public xlogic {
  61. public:
  62.     invalidargument(const char * = 0, const char * = 0,
  63.         const char * = 0);
  64.     virtual ~invalidargument();
  65. protected:
  66.     virtual void do_raise();
  67.     };
  68.         // class lengtherror
  69. class lengtherror : public xlogic {
  70. public:
  71.     lengtherror(const char * = 0, const char * = 0,
  72.         const char * = 0);
  73.     virtual ~lengtherror();
  74. protected:
  75.     virtual void do_raise();
  76.     };
  77.         // class outofrange
  78. class outofrange : public xlogic {
  79. public:
  80.     outofrange(const char * = 0, const char * = 0,
  81.         const char * = 0);
  82.     virtual ~outofrange();
  83. protected:
  84.     virtual void do_raise();
  85.     };
  86.         // class overflow
  87. class overflow : public xruntime {
  88. public:
  89.     overflow(const char * = 0, const char * = 0,
  90.         const char * = 0);
  91.     virtual ~overflow();
  92. protected:
  93.     virtual void do_raise();
  94.     };
  95.         // class xdomain
  96. class xdomain : public xlogic {
  97. public:
  98.     xdomain(const char * = 0, const char * = 0, const char * = 0);
  99.     virtual ~xdomain();
  100. protected:
  101.     virtual void do_raise();
  102.     };
  103.         // class xrange
  104. class xrange : public xruntime {
  105. public:
  106.     xrange(const char * = 0, const char * = 0, const char * = 0);
  107.     virtual ~xrange();
  108. protected:
  109.     virtual void do_raise();
  110.     };
  111.         // function declarations
  112. fvoid_t *set_terminate(fvoid_t *);
  113. fvoid_t *set_unexpected(fvoid_t *);
  114. void terminate(), unexpected();
  115.  
  116. #if __MWERKS__
  117. #pragma options align=reset
  118. #endif
  119.  
  120. #endif
  121.  
  122. /*
  123.  * Copyright (c) 1994 by P.J. Plauger.  ALL RIGHTS RESERVED. 
  124.  * Consult your license regarding permissions and restrictions.
  125.  */
  126.  
  127.